The field of the invention is machine vision systems, and particularly, the development of application programs for such systems.
Computer vision, sometimes referred to as image processing, involves the extraction of vision-related information from signals representing a scene and performing image signal processing on those signals. Applications of computer vision techniques include character recognition, industrial inspection of manufactured items, robot guidance systems, radiology, remote sensing, and so on.
Implementation of a machine vision application typically involves the performance of a number of common processing steps. For example, in a first step, image acquisition is performed to acquire an image of the scene to be analyzed. The image may, for example, be represented in the form of a monochrome or simple digital image f(x,y) discretized both in spatial coordinates x,y and in brightness (gray levels). Image processing techniques may then be performed on the digital image in order to improve the image and increase the chances for success in subsequent analysis processes. Such image processing techniques may include enhancing the contrast between one or more objects and the background, and filtering noise from the image. A machine vision system may have a library of software tools for carrying out such image processing functions.
After the image is enhanced it is analyzed to provide the desired information. Analysis functions can conveniently be divided into four main categories: gauging; inspection; guidance; and identification. “Gauging” involves finding parts or their edges in an image and measuring the distance between them. For example, is the gap on a spark plug within tolerance? “Inspection” is typically a check on the quality of the imaged product. For example, is the ink smeared on a label or are there defects in the surface of sheet material? “Guidance” involves accurately locating objects in a scene. For example, what is the location and orientation of a part for a robot to pick up? And finally, “identification” involves the interpretation or reading of alphanumeric characters, bar codes or two-dimensional codes. For example, a bar code fixed to a product may be scanned and identified to record the removal of the product from inventory.
In early machine vision systems it was necessary to develop an application program in a programming language such as Fortran or C to carry out each of the above steps. In more recent systems, software modules may be provided in a library and these modules are selected and linked together by the user to form an application program for performing the desired machine vision functions. In modern machine vision systems, development can be performed programmatically, or by linking vision tools in graphic form using a development environment such as VisualBasic by Microsoft, LabView by National Instruments, or VisionPro QuickStart, by Cognex Corporation. In these systems a library of machine vision tools may be provided which link together the software modules to perform image processing and image analysis functions such as:                Histogram equalization: enhance the contrast of the scene, with some smoothing, to remove noise or for subsequent subsampling;        Alignment: a pattern location tool that can train a pattern, search for that pattern in the scene, and provide results of that search;        Caliper: determine the location of a single edge or the location and spacing of pairs of edges in a scene; and        Blob: locate within a scene any two-dimensional closed shape comprised of a specific range of gray-scale values and provide information such as the number of blobs and how the blobs are topologically related to each other.        
Regardless of the machine vision tool library available to the user, the development of a machine vision application program is a highly skilled activity. The application programmer must select the proper software modules and/or vision tools from the system library to accomplish the machine vision task to be accomplished, and the programmer must specify particular parameters required by each software module or machine vision tool. This requires specialized training in machine vision in general and often in the particular machine vision system being used.
Large companies that use machine vision extensively can justify hiring application programmers having the requisite skills. Smaller companies or users with a limited number of machine vision systems can obtain programming support from the machine vision system vendor or systems integrators, but such support is costly and is often the factor which economically forecloses the use of machine vision for the particular application. This is particularly true if the user's machine vision system is in a remote location and the application programmer must travel a long distance and incur living expenses while performing the task.
In addition to developing the application program for a machine vision system, that program must be maintained over a long period of time. Over time, the appearance of parts being examined may change due to changes in part design or materials, manufacturing tolerances and quality metrics may change, and environmental conditions such as lighting may change. Additionally, it may be necessary to replace or upgrade the machine vision system or components of it. These changes may affect the operation of the machine vision system and require the skills of a trained programmer to correct.